import { requestDelete, requestGet, requestUpdate, getHeadersFromRequest } from '@shopstack/cs-admin-lib/server'
import { NextApiRequest, NextApiResponse } from "next";

export default async (req: NextApiRequest, res: NextApiResponse) => {
  if (req.method === 'GET') {
    try {
      const result = await requestGet(
        req.query.entity as string,
        req.query as any,
        getHeadersFromRequest(req)
      )
      return res.status(200).json(result)
    } catch (e) {
      return res.status(e.status).json(e.error)
    }
  }

  if (req.method == 'PUT') {
    try {
      const result = await requestUpdate(
        req.query.entity as string,
        req.query.id as string,
        req.body,
        req.query.system as string,
        getHeadersFromRequest(req)
      )
      return res.status(200).json(result)
    } catch (e) {
      return res.status(e.status).json(e.error)
    }
  }

  if (req.method == 'DELETE') {
    try {
      const result = await requestDelete(
        req.query.entity as string,
        req.query.id as string,
        req.query.system as string,
        getHeadersFromRequest(req)
      )
      return res.status(200).json(result)
    } catch (e) {
      return res.status(e.status).json(e.error)
    }
  }
}